/*
  学习目标：使用subscribe监听state变化
*/

import { createStore } from 'redux';

//  2. 导入创建函数，创建store。
// 💥从reducer函数的第二个形参中接收action
// 💥通过reducer负责修改state,新值覆盖旧值,返回数值
// 1. 将reducer提取为单独的函数
// 1. 将reducer提取为单独的函数
//   2. 使用switch，替换if语句
//   3. 提取变量，作为初始状态
const store = createStore(function (state = { count: 0 }, action) {
  console.warn('我进来了仓库', action);
  switch (action.type) {
    case 'add':
      return { ...state, count: state.count + 1 };
    case 'des':
      return { ...state, count: state.count - 1 };
    default:
      return state;
  }
});

// console.log('第一次获取state', store.getState());
const unsubFn = store.subscribe(() => {
  console.log('状态发生变化了,state的值', store.getState());
});
store.dispatch({ type: 'add' });
store.dispatch({ type: 'des' });

// 关闭监听
unsubFn();

store.dispatch({ type: 'des' });
store.dispatch({ type: 'des' });
